package com.example.mq.RabbitMQ;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author Jason
 * @PACKAGE_NAME com.example.mq.RabbitMQ
 * @Description 消费者
 * @date 2023-11-22 15:50
 */
public class 消费者 {
    public static void main(String[] args) throws IOException, TimeoutException {

//        创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
//        服务地址
        factory.setHost("localhost");
//        账号
        factory.setUsername("guest");
//        密码
        factory.setPassword("guest");
//        端口号
        factory.setPort(5672);
//        创建连接
        Connection connection = factory.newConnection();
//        创建信道
        Channel channel = connection.createChannel();

//        接收消息的回调函数
        DeliverCallback deliverCallback = (consumerTage,message) ->{
            System.out.println("接收到消息:" + new String(message.getBody()));
        };

//        取消消息的回调函数
        CancelCallback cancelCallback = consumerTage ->{
            System.out.println("消费消息被中断:");
        };


        /*
        * 消费消息
        * 1.消费哪个队列
        * 2.是否需要自动应答 true：自动应答
        * 3.接收消息的回调函数
        * 4.消费者取消消息的回调函数
        * */
        channel.basicConsume("队列名称",true,deliverCallback,cancelCallback);
    }
}
